/* Diese Klasse ergibt uns die Haeufigkeit fuer die vorgemerten 
 * Buecher je nach Sachgebiet. Es braucht eine Liste von 
 * allen vorhandenen und vorgemerkten Buechern der Bibliothek  
 *  
 * Datei : Vormerkung.java             Autor : Kouende Steeve
 * Datum : 07.11.2011
 */

package statistik;                     /* diese package beinhaltet
                                          alle notwendige klasse,
                                          die zur Ausfuehrung diese 
                                          Klasse benoetigt werden */

import java.util.ArrayList;

/*
 * die oeffentlichen Daten von der Klasse Vormerkung sind :
 * List < Integer > haufigkeit : (beinhaltet wie viel mal jedes Buch
 *                              vorgemerkt ist)
 *  List <haeufigkeitB> : (beinhaltet wie viel mal jedes Buch 
 *  vorgemerkt ist im Vergleich zu anderen Buechern des gleiches 
 *  Sachgebiet)
 * int i,j,counter 
 * mediumSG newMediumSG: (beinhaltet eine Liste von alle Buecher,
 *  die im Bibliothek (nach Sachgebiete) vorhanden und ausleihbar 
 *  sind) 
 * ausMediumSG newAusMediumSG : (beinhaltet eine Liste von allen 
 * ausgeliehenen Buechern von der Bibliothek (nach Sachgebiete))
 * 
 *  die privaten Daten von der Klasse Haufigkeit sind :
 * 
 * String s; int m; float result, h, a;
 * int count
 * 
 * die Methoden von der Klasse Vormerkung sind :
 * void vorgemerkteB ()
 * void hauefigkeitBuch ()
 * void anzeige ()
 */
public class Vormerkung
{
  public static void main (String[] args)
  {

    Vormerkung livre = new Vormerkung (5);
    livre.vorgemerkteB ();
    livre.hauefigkeitBuch ();
    livre.anzeigen ();
  }

  mediumSG mediumVorSG;
  vorMediumSG vorgemerkteSG;
  
  ArrayList<Integer> haufigkeit = new ArrayList ();
  ArrayList<Float> haeufigkeitB = new ArrayList ();
  int counter, i, j;

  public Vormerkung (int sachgebiet)
  {
    mediumVorSG = new mediumSG (sachgebiet);
    vorgemerkteSG = new vorMediumSG (sachgebiet);
  }

  // diese Methode zaehlt wie oft ein Buch vorgemerkt ist
  public void vorgemerkteB ()
  {
    for (i = 0; i <
        mediumVorSG.gibMedium ().size (); i++)
    {
      String s = (String) mediumVorSG.gibMedium ().get (i);
      int m = 0;

      for (j = 0; j <
          vorgemerkteSG.gibVorgemerkteMedium ().size (); j++)
      {
        if (s.equals
            (vorgemerkteSG.gibVorgemerkteMedium ().get (j)))
        {
          m++;
        }
      }
      haufigkeit.add (m);

    }
  }

  /* Die funktion liefert, wie oft ein Buch im Vergleich zu andere
   * vorgemerkt ist
   */
  public void hauefigkeitBuch ()
  {
    float result, h, a;
    int count;

    for (count = 0; count < 
        mediumVorSG.gibMedium ().size (); count++)
    {
      h = (float) haufigkeit.get (count);
      a = (float) vorgemerkteSG.gibVorgemerkteMedium ().size ();

      result = (float) ( (h / a) * 100);
      haeufigkeitB.add (result);
    }
  }

  /* die funktion gibt uns im prozent 
   *  wie oft ein Buch vorgemerkt ist
   */
  public void anzeigen ()
  {
    int count;

    for (count = 0; count < 
        mediumVorSG.gibMedium ().size (); count++)
    {
      System.out.printf 
      ("Buch %s hat %.2f \n", mediumVorSG.gibMedium ().get (count),
         haeufigkeitB.get (count));
    }
  }

}
